//////////////////////////////////////////////////////////////////////////////////////
//
//  类描述：
//
//         BASE基类      接口层
//  功能描述：
//       
//        实现添加child进到basemanege
//        实现基类功能的快速设置
//
//  功能实现：
// 
//        被继承
//  
//
//////////////////////////////////////////////////////////////////////////////////////


abstract class CSPRITE extends CBASE{
	//图形数据

	protected bitmap:egret.Bitmap[]=[]
	protected movieclip:egret.MovieClip[]=[]
	public resname:string
	abstract update():any;    //自动调用的更新
	//基类接口
	public constructor() {
		super()
		CBASE_MANAGE.getCBASE_MANAGE.BASE_addchild(this)

	}

	protected createBitmapByName(name: string){
		
        this.bitmap.push(new egret.Bitmap())
        let a: egret.Texture= RES.getRes(name);
		this.bitmap[this.bitmap.length-1].texture = a;
    }
	protected createMovieClipByJsonAndName(stjson:string,strpng:string)
	{
		var _json=RES.getRes(stjson);
		var _png=RES.getRes(strpng);		
		var MovieClipDataFactory=new egret.MovieClipDataFactory(_json,_png);
		this.movieclip.push(new egret.MovieClip(MovieClipDataFactory.generateMovieClipData()));
	}
	protected ShowOrHide(a:boolean)
	{
      if(a)
	  {
		  for(var b=0;b<this.bitmap.length;b++)
		  {
            this.addChild(this.bitmap[b])
		  }
		  for(var c=0;c<this.movieclip.length;c++)
		  {
			  this.addChild(this.movieclip[c])
		  }
	  }
	  else
	  {
		 
		  for(var b=0;b<this.bitmap.length;b++)
		  {
			if(this.getChildIndex(this.bitmap[b])!=-1)
             this.removeChild(this.bitmap[b])
		  }
		  for(var c=0;c<this.movieclip.length;c++)
		  {
			  if(this.getChildIndex(this.movieclip[c])!=-1)
			  this.removeChild(this.movieclip[c])
		  }
	  }
	}
	protected addBitmap(a:egret.Texture)
	{
       this.bitmap.push(new egret.Bitmap)
	   this.bitmap[this.bitmap.length-1].texture=a
	}
	public set objname(a:string)
	{
		
		if(this.objName!=undefined)
		{
			CBASE_MANAGE.getCBASE_MANAGE.BASE_removechildbyname(this.objName)
		}
		this.objName=a;
		CBASE_MANAGE.getCBASE_MANAGE.BASE_addchild(this,this.objName)
		this.name=a
	}
	public get objname():string{
	return this.objName
		
	}

}